package com.wlz.service.impl;


import com.alibaba.fastjson.JSONObject;
import com.wlz.config.ProjectConfig;
import com.wlz.entity.AppTemplateMsgEntity;
import com.wlz.model.BaseResponse;
import com.wlz.model.SendGZHTemplateBean;
import com.wlz.service.SendService;
import com.wlz.service.TemplateMsgService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * 模板消息相关服务实现
 *
 * @author wlz
 * @create 2019-11-04 4:44 PM
 **/

@Service("templateMsgService")
public class TemplateMsgServiceImpl extends BaseImpl implements TemplateMsgService {

    private Logger logger = LoggerFactory.getLogger(TemplateMsgServiceImpl.class);

    private final ProjectConfig projectConfig;

    public TemplateMsgServiceImpl(ProjectConfig projectConfig) {
        this.projectConfig = projectConfig;
    }



    @Autowired
    private SendService sendService;


    /**
     *推送（公众号） 模板消息
     *
     * @param openId 用户openId
     * @param templateId 所需下发的模板消息的id
     * @param pageUrl  点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
     * @param miniprogram  跳小程序所需数据，不需跳小程序可不用传该数据
     *          appid       所需跳转到的小程序appid（该小程序appid必须与发模板消息的公众号是绑定关联关系，暂不支持小游戏）
     *          pagepath    所需跳转到小程序的具体页面路径，支持带参数,（示例index?foo=bar），要求该小程序已发布，暂不支持小游戏
     * data   模板内容，不填则下发空模板。具体格式请参考示例。
     * @return
     */
    @Override
    public BaseResponse sendGZHTemplateMsg(String openId, String templateId, String pageUrl, Map<String, Object> miniprogram, Map<String, Object> data) {
        BaseResponse<AppTemplateMsgEntity> br = new BaseResponse<>();

        // 将请求参数封装
        SendGZHTemplateBean sendGZHTemplateBean = new SendGZHTemplateBean();
        sendGZHTemplateBean.setTouser(openId);
        sendGZHTemplateBean.setTemplate_id(templateId);
        sendGZHTemplateBean.setUrl(pageUrl);
        sendGZHTemplateBean.setMiniprogram(miniprogram);
        sendGZHTemplateBean.setData(data);


        // 调用发送模板消息
        JSONObject ret =  sendService.sendGZHTemplateMsg(sendGZHTemplateBean);
        if(ret != null && ret.getIntValue("code") == 0){
            br.setStatusCode(1);
            br.setMsg("发送公众号模板消息成功");
        }else{
            br.setStatusCode(1);
            br.setMsg("发送公众号模版消息失败");
        }
        return br;
    }


}
